package com.cardone.platform.usercenter.dto;

import java.util.Date;
import java.util.List;

import lombok.Getter;
import lombok.Setter;
import lombok.experimental.Accessors;

import org.springframework.data.annotation.Transient;

import com.cardone.platform.authority.dto.PermissionDto;
import com.cardone.platform.usercenter.po.User;

/**
 * 用户
 *
 * @author yaohaitao
 *
 */
@Getter
@Setter
@Accessors(chain = true)
public class UserDto extends User {
	/**
	 * 用户
	 *
	 * @author yaohaitao
	 *
	 */
	public enum Attributes {
		/**
		 * 账号名称
		 */
		accountName,

		/**
		 * 地址
		 */
		address,

		/**
		 * 年龄
		 */
		age,

		/**
		 * 出生日期
		 */
		birthday,

		/**
		 * 昵称
		 */
		callName,

		/**
		 * 字典.市标识
		 */
		cityId,

		/**
		 * 工作单位
		 */
		companyName,

		/**
		 * 字典.国家标识
		 */
		countryId,

		/**
		 * 字典.学历/文凭标识
		 */
		diplomaId,

		/**
		 * 字典.区标识
		 */
		districtId,

		/**
		 * 邮箱
		 */
		email,

		/**
		 * 字典.标记标识(专家/普通用户)
		 */
		flagId,

		/**
		 * 字典.民族标识
		 */
		folkId,

		/**
		 * 简介
		 */
		intro,

		/**
		 * 现居住地
		 */
		locus,

		/**
		 * 字典.婚姻状态标识
		 */
		marryStateId,

		/**
		 * 手机
		 */
		mobilePhone,

		/**
		 * 密码
		 */
		password,

		/**
		 * 字典.职业标识
		 */
		professionId,

		/**
		 * 字典.省标识
		 */
		provinceId,

		/**
		 * 字典.性别标识
		 */
		sexId,

		/**
		 * 联系电话
		 */
		telephone,
	}

	/**
	 * 版本号
	 */
	@Transient
	private static final long serialVersionUID = 439389283287862577L;

	/**
	 * 用户
	 *
	 * @return 用户
	 */
	public static UserDto newUser() {
		return new UserDto();
	}

	/**
	 * 部门代码
	 */
	@Transient
	private String departmentCode;

	/**
	 * 部门名称
	 */
	@Transient
	private String departmentName;

	/**
	 * 字典.学历/文凭代码
	 */
	@Transient
	private String diplomaCode;

	/**
	 * 字典.学历/文凭名称
	 */
	@Transient
	private String diplomaName;

	/**
	 * 字典.标记代码
	 */
	@Transient
	private String flagCode;

	/**
	 * 字典.标记名称
	 */
	@Transient
	private String flagName;

	/**
	 * 字典.民族代码
	 */
	@Transient
	private String folkCode;

	/**
	 * 字典.民族名称
	 */
	@Transient
	private String folkName;

	/**
	 * 是否载信授权列表
	 */
	private boolean isLoadPermissionList;

	/**
	 * 最后登录时间
	 */
	@Transient
	private Date lastLoginDate;

	/**
	 * 登录错误次数
	 */
	@Transient
	private Integer loginErrorCount;

	/**
	 * 登录键名
	 */
	@Transient
	private String loginKey;

	/**
	 * 字典.婚姻状态代码
	 */
	@Transient
	private String marryStateCode;

	/**
	 * 字典.婚姻状态名称
	 */
	@Transient
	private String marryStateName;

	/**
	 * 现在年龄
	 */
	private Double nowAge;

	/**
	 * 部门代码
	 */
	@Transient
	private String orgCode;

	/**
	 * 部门名称
	 */
	@Transient
	private String orgName;

	/**
	 * 授权集合
	 */
	@Transient
	private List<PermissionDto> permissionList;

	/**
	 * 字典.职业代码
	 */
	@Transient
	private String professionCode;

	/**
	 * 字典.职业名称
	 */
	@Transient
	private String professionName;

	/**
	 * 角色代码集合
	 */
	@Transient
	private List<String> roleCodeList;

	/**
	 * 角色标识集合
	 */
	@Transient
	private List<String> roleIdList;

	/**
	 * 字典.性别代码
	 */
	@Transient
	private String sexCode;

	/**
	 * 字典.性别名称
	 */
	@Transient
	private String sexName;

	/**
	 * 站代码
	 */
	private String siteCode;

	/**
	 * 站标识
	 */
	private String siteId;

	/**
	 * 站名称
	 */
	private String siteName;

	/**
	 * 验证码
	 */
	@Transient
	private String validationCode;

	/**
	 * 失效编号
	 */
	private String validCode;
}